The present invention relates to flash memory devices and, more particularly, to methods and systems for detecting and correcting errors in multi-bit data stored in flash memory devices.
Nonvolatile memory devices are memory devices that can retain data even when power is not supplied to the device. Flash memory devices are one type of nonvolatile memory device. Although flash memory devices tend to be slower than the dynamic random access memory (DRAM) devices that are typically used as the main memory of personal computers (PC), flash memory devices may be faster and more robust against impact than hard disk memory storage devices. Because of these characteristics, flash memory devices are widely used as storage units in battery-operated storage devices.
Flash memory devices are electrically erasable and programmable. Thus, unlike electrically erasable programmable read only memory (EEPROM) devices, flash memory devices can be erased and programmed on a block-by-block basis. Because flash memory devices are less expensive than EEPROM devices, they are widely used for high-capacity solid-state nonvolatile storage in products such as, for example, digital music players, digital cameras and cellular phones. Flash memory devices are also used in universal serial bus (USB) drives that are widely used to store data and to transfer data between computers.
Flash memory devices store data in one or more cell arrays. Each cell in the array includes a floating gate transistor that stores one bit of data. Multi-level cell (MLC) flash memory devices that can store more than 1-bit of data per cell are also known in the art. MLC flash memory devices store more than 1 bit of data per cell by controlling the amount of electric charge accumulated in the floating gate of each cell. Herein, flash memory devices that store 1-bit of data per memory cell are called single-level cell or “SLC” flash memory devices and flash memory devices that store M-bits of data (where M is a positive integer that is greater than or equal to 2) per memory cell are called MLC flash memory devices.
With SLC flash memory devices, the data stored in a memory cell can be determined using a reference voltage that is between the threshold voltage distribution of data ‘1’ and the threshold voltage distribution of data ‘0’ (see FIG. 1A). For example, the data ‘1’ or ‘0’ can be determined based on whether or not a current flows through the memory cell when the reference voltage is applied to a control gate of the memory cell. Such a scheme can be similarly applied to MLC flash memory devices. As illustrated in FIG. 1A, two threshold voltage distributions are used to store 1-bit data in a memory cell. In contrast, as illustrated in FIGS. 1B and 1C, 2M threshold voltage distributions are used to store M-bit data in a memory cell of an MLC flash memory device. For example, four threshold voltage distributions are used to store 2-bit data in a memory cell (FIG. 1B), eight threshold voltage distributions are used to store 3-bit data in a memory cell (FIG. 1C), and sixteen threshold voltage distributions are used to store 4-bit data in a memory cell (not shown in the figures). Thus, as the number of bits of data stored in a memory cell increases, the number of threshold voltage distributions used likewise increases.
However, the threshold voltage of a memory cell must be distributed within a predetermined voltage range, regardless of the number of bits of data stored in the memory cell. For this reason, as the number of threshold voltage distributions used increases, adjacent threshold voltage distributions may overlap each other as illustrated in FIGS. 1B and 1C. The amount of overlap generally increases as the number of bits of data stored in a memory cell increases. The amount of overlap may also be affected by a variety of factors such as charge loss, time elapse, temperature increase, coupling generated when adjacent cells are programmed, read operations on adjacent cells and/or cell failure. When adjacent threshold voltage distributions overlap, read data may contain many errors.